package com.chen.templatemethoddesignpattern;

// 抽象类：定义模板方法
public abstract class CaffeineBeverage {

    // 模板方法：定义算法骨架，通常设为 final 防止子类修改流程
    public final void prepareRecipe() {
        boilWater();
        brew();          // 子类实现
        pourInCup();
        addCondiments(); // 子类实现
    }

    abstract void brew();         // 抽象方法：冲泡

    abstract void addCondiments(); // 抽象方法：添加调料

    // 具体方法
    void boilWater() {
        System.out.println("Boiling water");
    }

    void pourInCup() {
        System.out.println("Pouring into cup");
    }
}
